package com.sn.utils;

import com.sn.pojo.News;
import com.sn.pojo.NewsItem;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class NanShenUtils {
    //审计大学
    private String uri = "https://news.nau.edu.cn/5797/list"+page+".htm";//https://news.nau.edu.cn/5797/list1.htm
    private static int page=1;

    public static void main(String[] args) {
//        List<News> news = new NanShenUtils().getNews();
        NewsItem item = new NanShenUtils().getItem("https://news.nau.edu.cn/2022/0301/c5797a93729/page.htm");
        System.out.println(item.getNAuthor());
    }

//    分析:审计大学的新闻列表存放在<ul class="cols_list clearfix">包裹的li标签之中
//        新闻的分类放在 <h2 class="column-title">之中

    public List<News> getNews() {
        //使用工具类获取client连接池,获取client对象来请求网页
        PoolingHttpClient httpClient=new PoolingHttpClient();
        String content = httpClient.doGetHtml(uri);
        System.out.println("是否进行了翻页?审计"+page);
        System.out.println("看一下地址 审计"+uri);
        page++;
        List<News>newsList=new ArrayList<>();
        Document doc = Jsoup.parse(content);
        //首先获取分类
        String category = doc.getElementsByClass("column-title").text();
        //第一步先获取ul
        Element ul = doc.getElementsByClass("cols_list clearfix").first();
        //第二步，解析ul
        Elements lis = ul.getElementsByTag("li");
        for (Element li : lis) {
            //遍历li集合,得到a标签
            Elements a = li.getElementsByTag("a");
            String title = a.text();//获取标题
            String href = a.attr("href");// 需要拼接才能跳转 -->https://news.nau.edu.cn +/2022/0225/c5797a93662/page.htm
            href="https://news.nau.edu.cn"+href;
            System.out.println("标题:"+title+ "链接"+href);
            News news=new News();
            news.setNHref(href);//设置链接
            news.setNTitle(title);//设置标题
            news.setSId(5);//设置学校id
            news.setNGetTime(Tools.getFormatDate(new Date()));//设置爬取时间
            news.setNCategory(category);//设置分类
            newsList.add(news);//添加
        }
        return newsList;
    }
//  分析: 审计大学的新闻作者信息 详情内容 包裹在 <div class='wp_articlecontent'>之中
//  作者信息在该div下的第一个p标签里面,详情内容第一个后面的所有p标签 注意:有的新闻详情作者是包含在span标签之中的
//  发布时间在<span class="arti-update">里面
    public NewsItem getItem(String iUri){
        //使用工具类获取client连接池,获取client对象来请求网页
        PoolingHttpClient httpClient=new PoolingHttpClient();
        String content = httpClient.doGetHtml(iUri);

        //直接使用jsoup解析content
        Document doc = Jsoup.parse(content);
        //第一步先获取div
        Element div = doc.getElementsByClass("wp_articlecontent").first();

        //第二步获取每个p标签的text,通过字符串拼接接起来
        String author="";
        List<String> list = div.getElementsByTag("p").eachText();
        Element h1 = div.getElementsByTag("h1").first();
        StringBuffer sb=new StringBuffer();
        if (h1!=null){
            author=h1.getElementsByTag("span").first().text();
            for (String s : list) {
                sb.append(s);
            }
        }
        else{
            int i=0;
            for (String s : list) {
                if (i==0){
                    author=s;
                    i++;
                }
                else sb.append(s);
            }
        }
        String values = sb.toString();
        //获取发布时间 --> class="infos"下的 第二个li标签里面的所有a标签下的text
        Element span = doc.getElementsByClass("arti-update").first();
        String putDate = span.text();
        NewsItem newsItem=new NewsItem();
        newsItem.setNAuthor(author);//设置作者
        newsItem.setNValue(values);//设置内容
        newsItem.setNCreateTime(putDate);//设置发布时间
        return newsItem;
    }

    public String getUri() {
        return uri;
    }

    public void setUri(String uri) {
        this.uri = uri;
    }


}
